layui.define(['form', 'jquery', 'layer'],function (exports) {
    var form = layui.form,
        $ = layui.jquery;

    var areal={
        // 创建一个Select
        createSelect : function(optionData) {
            var html = '';
            html += '<div class="layui-input-inline">';
            html += '<select lay-filter="demo">';
            html += '<option value="">请选择</option>';
            for(var i = 0; i < optionData.length; i++) {
                html += '  <option value="' + optionData[i].id + '">' + optionData[i].text + '</option>';
            }
            html += ' </select>';
            html += '</div>';
            return html;
        },

        // 获取当前option的数据
         getOptionData : function(catData, optionIndex) {
            var item = catData;
            for(var i = 0; i < optionIndex.length; i++) {
                if('undefined' == item[optionIndex[i]]) {
                    item = null;
                    break;
                } else if('undefined' ==  item[optionIndex[i]]['children']) {
                    item = null;
                    break;
                } else {
                    item = item[optionIndex[i]]['children'];
                    if(item.length == 0){
                        item = null;
                        break;
                    }
                }
            }
            return item;
        },
        init:function ($selectWrap,categoryJson,selected) {
            // 创建顶级select
            var html = areal.createSelect(categoryJson);
            $selectWrap.append(html);
            var index = [];
            for(var i = 0; i < selected.length; i++) {
                // 设置最后一个select的选中值
                $selectWrap.find('select:last').val(selected[i]);
                // 获取该选中值的索引
                var lastIndex = $selectWrap.find('select:last').get(0).selectedIndex - 1;
                index.push(lastIndex);
                // 取出下级的选项值
                var childItem = areal.getOptionData(categoryJson, index);
                // 下级选项值存在则创建select
                if(childItem) {
                    var html = areal.createSelect(childItem);
                    $selectWrap.append(html);
                }
            }

            form.render('select');

            // 监听select
            form.on('select(demo)', function(data) {
                var $thisItem = $(data.elem).parent();
                // 移除后面的select
                $thisItem.nextAll('div.layui-input-inline').remove();
                var index = [];
                // 获取所有select，取出选中项的值和索引
                $thisItem.parent().find('select').each(function() {
                    index.push($(this).get(0).selectedIndex - 1);
                });

                var childItem = areal.getOptionData(categoryJson, index);

                if(childItem) {
                    var html = areal.createSelect(childItem);
                    $selectWrap.append(html);
                    form.render('select');
                }
            });

        }
    };

    exports("areal",areal);

})